export default {
	//不能为空
	checkText(rule, value, callback) {
		if (!value) {
			return callback(new Error('填报信息不能为空'));
		} else {
			callback();
		}
	},
	//数字校验 能用
	checkNum(rule, value, callback) {
		console.log(typeof (value))
		if (!value) {
			return callback(new Error('填报信息不能为空'));
		}
		setTimeout(() => {
			if (!Number.isInteger(Number(value))) {
				callback(new Error('请输入整数'));
			} else {
				callback();
			}
		}, 500);
	},

	//校验会员证书号码
	checkBookNum(rule, value, callback) {
		const reg = /^[0-9]{1,6}$/
		if (!value) {
			return callback(new Error('填报信息不能为空'));
		} else {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('会员证书号码格式不正确'))
			}
		}


	},
	checkNum1(rule, value, callback) { //选填
		console.log(typeof (value))
		if (!value) {
			return callback();
		}
		setTimeout(() => {
			if (!Number.isInteger(Number(value))) {
				callback(new Error('请输入整数'));
			} else {
				callback();
			}
		}, 500);
	},
	isNumber(rule, value, callback) {
		if (!value) { //当使用时没有定义text则非空验证默认提示请输入
			return callback(new Error('填报信息不能为空'));
		} else {
			// const reg = /^[0-9]*$/
			const reg = /^[+-]?\d+(?:\.\d{1,4})?$/
			if (reg.test(value) && value >= 0) {
				callback();
			} else {
				if (value != null && value != "" && !reg.test(value)) {
					var valueTest = ''
					var wz
					if (value.indexOf('.') > 0) {
						wz = value.indexOf('.')
						var len = value.length
						valueTest = value.substring(wz + 1, len)
					}
					if (valueTest.length > 0) {
						callback(new Error('仅支持小数点后4位!'));
					} else {
						callback(new Error('请输入数字!'));
					}
				}
			}
		}
	},
	isNumber_xuan(rule, value, callback) { //选填
		if (!value) { //当使用时没有定义text则非空验证默认提示请输入
			return callback();
		} else {
			// const reg = /^[0-9]*$/
			const reg = /^[+-]?\d+(?:\.\d{1,4})?$/
			if (reg.test(value) && value >= 0) {
				callback();
			} else {
				if (value != null && value != "" && !reg.test(value)) {
					var valueTest = ''
					var wz
					if (value.indexOf('.') > 0) {
						wz = value.indexOf('.')
						var len = value.length
						valueTest = value.substring(wz + 1, len)
					}
					if (valueTest.length > 0) {
						callback(new Error('仅支持小数点后4位!'));
					} else {
						callback(new Error('请输入数字!'));
					}
				}
			}
		}
	},
	//小数点后两位
	isNumber_Two(rule, value, callback) {
		if (!value) { //当使用时没有定义text则非空验证默认提示请输入
			return callback(new Error('填报信息不能为空'));
		} else {
			// const reg = /^[0-9]*$/
			const reg = /^[+-]?\d+(?:\.\d{1,4})?$/
			if (reg.test(value) && value >= 0) {
				callback();
			} else {
				if (value != null && value != "" && !reg.test(value)) {
					var valueTest = ''
					var wz
					if (value.indexOf('.') > 0) {
						wz = value.indexOf('.')
						var len = value.length
						valueTest = value.substring(wz + 1, len)
					}
					if (valueTest.length > 0) {
						callback(new Error('仅支持小数点后2位!'));
					} else {
						callback(new Error('请输入数字!'));
					}
				}
			}
		}
	},
	//小数点后两位
	isNumber_four(rule, value, callback) {
		if (!value) { //当使用时没有定义text则非空验证默认提示请输入
			return callback(new Error('填报信息不能为空'));
		} else {
			// const reg = /^[0-9]*$/
			const reg = /^[+-]?\d+(?:\.\d{1,4})?$/
			if (reg.test(value) && value >= 0) {
				callback();
			} else {
				if (value != null && value != "" && !reg.test(value)) {
					var valueTest = ''
					var wz
					if (value.indexOf('.') > 0) {
						wz = value.indexOf('.')
						var len = value.length
						valueTest = value.substring(wz + 1, len)
					}
					if (valueTest.length > 0) {
						callback(new Error('仅支持小数点后4位!'));
					} else {
						callback(new Error('请输入数字,仅支持小数点后4位!'));
					}
				}
			}
		}
	},
	//小数点数字验证
	// isNumber(rule, value, callback) {
	// 	if (!value) { //当使用时没有定义text则非空验证默认提示请输入
	// 		return callback(new Error('请输入'));
	// 	} else {
	// 		// const reg = /^[0-9]*$/
	// 		// const reg = /^[+-]?\d+(?:\.\d{1,4})?$/
	// 		// if (reg.test(value) && value >= 0) {
	// 		// 	callback();
	// 		// } else {
	//     //   if (!String(value).indexOf(".") + 1) {
	//     //     // callback(new Error('请输入数字!'));
	//     //     if(value != null && value != ""&& !reg.test(value)){
	//     //       callback(new Error('仅支持小数点后4位!'));
	//     //     }else  {

	//     //     }
	// 		// 	} 
	// 		// }
	//     // const PercentageAwards = value;
	//     // const reg = /^[+-]?\d+(?:\.\d{1,4})?$/;
	//     // if (PercentageAwards != null && PercentageAwards != ""&& !reg.test(PercentageAwards)) {
	//     //   callback(new Error('仅支持小数点后4位!'));
	//     // }

	//     // 获取对应的值
	//     // var value = $("#num").val();
	//     // // 编写正则表达式
	//     // var reg = /^\d+(?=\.{0,1}\d+$|$)/;
	//     // if (value != "") { 
	//     // if (!value.test(value)) { 
	//     //     alert("请输入正确的数字"); 
	//     //     return false;
	//     //     } else {
	//     //     alert("数字正确！")
	//     //     }
	//     // }

	// 	}
	// },
	// 非空不效验
	isNumber2(rule, value, callback) {
		if (!value) { //当使用时没有定义text则非空验证默认提示请输入
			return callback();
		} else {
			const reg = /^[+-]?\d+(?:\.\d{1,4})?$/
			if (reg.test(value) && value >= 0) {
				callback();
			} else {
				if (!String(value).indexOf(".") + 1) {
					callback(new Error('请输入数字!'));
				} else {
					callback(new Error('仅支持小数点后4位!'));
				}
			}
		}
	},
	/**
	 * 只能包含由汉字、字母、数字，以及 - 和 _
	 */
	isStr(rule, value, callback) {
		if (!value) {
			return callback(new Error(rule.text ? rule.text : '请输入'));
		} else {
			const reg = /^[\u4e00-\u9fa5\w\d-_]+$/
			if (reg.test(value)) {
				callback();
			} else {
				callback('包含非法字符');
			}
		}
	},

	/**
	 * 手机号验证 （11位数字，以1开头。） 能用
	 */
	isPhone(rule, value, callback) {
		const reg = /^1\d{10}$/
		// const reg = /^1[3|4|5|7|8][0-9]{9}$/
		if (!value) {
			return callback(new Error('电话号码不能为空'));
		}
		setTimeout(() => {
			// Number.isInteger是es6验证数字是否为整数的方法,但是我实际用的时候输入的数字总是识别成字符串
			// 所以我就在前面加了一个+实现隐式转换
			if (!Number.isInteger(+value)) {
				callback(new Error('电话号码格式不正确'))
			} else {
				if (reg.test(value)) {
					callback()
				} else {
					callback(new Error('电话号码格式不正确'))
				}
			}
		}, 500)
	},
	isPhone1(rule, value, callback) { //选填
		const reg = /^1\d{10}$/
		// const reg = /^1[3|4|5|7|8][0-9]{9}$/
		// Number.isInteger是es6验证数字是否为整数的方法,但是我实际用的时候输入的数字总是识别成字符串
		// 所以我就在前面加了一个+实现隐式转换
		if (!value) {
			callback()
		} else {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('电话号码格式不正确'))
			}
		}
		// if (!Number.isInteger(+value)) {
		//   callback(new Error('电话号码格式不正确'))
		// } 
	},
	/**
	 * 网址验证 www.或http://开头https://
	 */
	isHttp(rule, value, callback) {
		if (!value) {
			callback(new Error(rule.text ? rule.text : '请输入网址'));
		} else {
			const reg = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/
			const reg2 = /(http|https):\/\/([\w.]+\/?)\S*/
			if (reg.test(value) || reg2.test(value)) {
				callback();
			} else {
				callback('请输入正确的网址');
			}
		}
	},

	/**
	 * 邮箱验证   能用
	 */
	isEmail(rule, value, callback) {
		const reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
		// const reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
		// const reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; 
		if (!value) {
			return callback(new Error('邮箱不能为空'));
		}
		setTimeout(() => {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('请输入正确的邮箱格式'))
			}
		}, 500)
	},
	isEmail1(rule, value, callback) { //选填
		const reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
		// const reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
		// const reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; 
		if (!value) {
			callback()
		} else {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('请输入正确的邮箱格式'))
			}
		}

	},

	/**
	 * 验证身份证号码（15位或18位数字）
	 */
	isIdentity(rule, value, callback) {
		const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
		if (!value) {
			return callback(new Error('请输入证件号码'));
		} else {
			if (reg.test(value)) {
				callback();
			} else {
				callback('请输入正确的证件号码');
			}
		}
	},
	//办公电话 能用
	isTel(rule, value, callback) {
		const reg =
			/^(((\d{3,4}-)?[0-9]{7,8})|(1(3|4|5|6|7|8|9)\d{9}))$/
		// /((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3})|(\d{7,8})-(\d{4}|\d{3}))$)/
		if (!value) {
			return callback(new Error('电话号码不能为空'));
		}
		setTimeout(() => {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('请输入正确的电话格式'))
			}
		}, 500)
	},
	isTel1(rule, value, callback) { //选填只校验格式
		const reg =
			/((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3})|(\d{7,8})-(\d{4}|\d{3}))$)/
		if (!value) {
			callback()
		} else {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('请输入正确的电话格式'))
			}
		}

	},
	//邮编校验 能用
	isZipCode(rule, value, callback) {
		const reg = /^[0-9][0-9]{5}$/
		if (!value) {
			return callback(new Error('邮政编码不能为空'));
		}
		setTimeout(() => {
			if (reg.test(value)) {
				callback()
			} else {
				callback(new Error('请输入正确的邮编格式'))
			}
		}, 500)
	},


	//时间格式转换 十分秒
	timeFormer(b) {
		return b.getFullYear() + '-' + (b.getMonth() + 1 < 10 ? "0" + (b.getMonth() + 1) : b.getMonth() + 1) + '-' + (b
			.getDate() < 10 ? "0" + b.getDate() : b.getDate()) + ' ' + (b.getHours() < 10 ? "0" + b.getHours() : b
				.getHours()) + ':' + (b.getMinutes() < 10 ? "0" + b.getMinutes() : b.getMinutes()) + ':' + (b
					.getSeconds() < 10 ? "0" + b.getSeconds() : b.getSeconds())
	},
	//时间格式
	formate(t) {
		const check = t => t < 10 ? '0' + t : t;
		const year = t.getFullYear()
		const month = t.getMonth() + 1
		const day = t.getDate()
		const hour = t.getHours()
		const min = t.getMinutes()
		const sec = t.getSeconds()
		return check(year) + '-' +
			check(month) + '-' +
			check(day) + ' ' +
			check(hour) + ':' +
			check(min) + ':' +
			check(sec);
	},


	/**
	 * 验证银行账号（12位 16位 17 18 19 数字）
	 */
	isBankAccount(rule, value, callback) {
		const reg = /^([1-9]{1})(\d{11}|\d{15}|\d{16}|\d{17}|\d{18})$/
		if (!value) {
			return callback(new Error('请输入银行账号'));
		} else {
			if (reg.test(value)) {
				callback();
			} else {
				callback('请输入正确的银行账号');
			}
		}
	},


	/**
	 * 账号密码（6到32位的新密码，密码只能使用字母和数字，且必须同时有字母和数字）
	 */
	isPassword(rule, value, callback) {
		const reg = /(?=.*\d)(?=.*[a-zA-Z])(?!.*[^a-zA-Z0-9]).{6,32}/; //6-32位密码校验规则
		if (reg.test(value)) {
			callback();
		} else {
			callback(new Error());
		}
	},

	//所占比例
	isProportion(rule, value, callback) {
		const reg = /^([0-9]{1,2}|100)$/;
		if (reg.test(value)) {
			callback();
		} else {
			callback('请输入1到100的整数');
		}
	},



	/**
	 *统一社会信用代码（18位）
	 */
	isSocialCode(rule, value, callback) {
		const reg = /[1-9A-GY]{1}[1239]{1}[1-5]{1}[0-9]{5}[0-9A-Z]{10}/; //统一社会信用校验规则
		if (!value) {
			return callback(new Error('请输入统一社会信用代码'));
		} else {
			if (value.length != 18) {
				callback('请输入正确的统一社会信用代码');
			}
			if (reg.test(value)) {
				callback();
			} else {
				callback('请输入正确的统一社会信用代码');
			}
		}
	},


	//台湾居民来往内地通行证
	isTaiwanPass(rule, value, callback) {
		//身份证
		const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
		//港澳居民来往内地通行证
		const reg1 = /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/;
		//护照（包括香港和澳门）
		const reg2 = /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/;
		//香港居住证-810开头、字母数字结尾 共18位
		const reg3 = /(^810)([A-Za-z0-9]{15}$)/;
		//澳门居住证-820开头、字母数字结尾 共18位
		const reg4 = /(^820)([A-Za-z0-9]{15}$)/;
		//护照（包括香港和澳门）
		const reg5 = /^\\d{8}|^[a-zA-Z0-9]{10}|^\\d{18}$/  //台湾通行证
		if (!value) {
			return callback(new Error('请输入有效证件号'));
		} else {
			if (reg.test(value) || reg1.test(value) || reg2.test(value) || reg3.test(value) || reg4.test(value) || reg5.test(value)) {
				callback();
			} else {
				callback('请输入正确的行证号码');
			}
		}
	},

}
